package cn.cqs.redisitem.linestructure;

import org.junit.jupiter.api.Test;

import java.util.Arrays;

/**
 * @discription :
 * @author: cqs
 * @date: 2020-09-12 6:45
 */
public class Queue {
    int [] elements;

    /**
     * 功能描述 :对列为先进先出
     *
     * @return void
     * @author cqs
     * @date 2020/9/12
     */

    @Test
    void queuTest() {
//        int初始化赋值方法一： new int[] {vale...}  备注：定义初始化值，就不能指定数组长度，否则会报错如：new int[5] {1,2,3,4,5}
//        int初始化赋值方法二： int[] ints={value...} 如：int[] ints = {1, 2, 4};
//        int[] ints = new int[]{1, 2, 3, 6, 4};
//        int[] arr = new int[0] 给整型数组arr开辟一个内存空间
        elements = new int[0];
//        poll(ints);
        add(3);
        System.out.println(Arrays.toString(elements));
        add(10);
        System.out.println(Arrays.toString(elements));
        poll();
        System.out.println(Arrays.toString(elements));
        poll();
        System.out.println(Arrays.toString(elements));
        add(11);
        System.out.println(Arrays.toString(elements));
    }

    /**
     * 功能描述 :进入对列，在最后
     *
     * @param element:
     * @return void
     * @author cqs
     * @date 2020/9/12
     */

    private void add(int element) {
//        数组长度在原基础上length+1
        int[] newarray = new int[elements.length + 1];
        newarray[newarray.length-1]=element;
//        数组拷贝是从0开始
        System.arraycopy(elements, 0, newarray, 0, elements.length);
//        重新将新的数组赋值给原组
        elements=newarray;
//        System.out.println(Arrays.toString(newarray));

    }

    /**
     * 功能描述 :出列，最选进先出
     *
     * @param ints:
     * @return int
     * @author cqs
     * @date 2020/9/12
     */

    private void poll() {
        System.out.println("元素出站："+elements[0]);
//        数组长度在原基础上length-1
        int[] newarray = new int[elements.length - 1];
//        数组之间拷贝（出列时最开始先出，即起始位置先出下标为0排除）
        System.arraycopy(elements, 1, newarray, 0, newarray.length);
        elements=newarray;

//        System.out.println(Arrays.toString(newarray));
    }


}
